Redis hash type
✒️ 2026-07-01 21:06 내용 수정
실습 참고 자료
- 인프런의 lettuce를 이용하여 redis 다루어 보기(저자: 신현호) 강의 내용을 참고하여 진행하였다.
- DB 연결 설정 분리를 진행한 후의 코드 형식을 적용했다.
Hash Type
- 공식 문서 : Redis Hashes
- Java의 DTO와 같은 field-value 집합을 가진 레코드 타입이다.
hset, hget 메서드
hset()과hget()으로 해시 타입 데이터를 저장하고 불러올 수 있다.
package myproject.redis.lettuce.hash;
import org.junit.jupiter.api.Test;
public class RedisLettuceHash {
@Test
public void hashTest() {
CommandAction action = redisCommands -> {
String key = "lettuce:hash";
// hset, hget
// 필드명 지정
String field = "roleCode";
// hash 타입으로 field명에 value 저장
redisCommands.hset(key, field, "A001");
String hgetResult = redisCommands.hget(key, field);
System.out.println("hget = " + hgetResult);
};
CommandTemplate.commandAction(action);
}
}

hmset, hmget 메서드
- mset, mget과 유사하게
hmset과hmget메서드로 여러 개의 hash 데이터를 저장하거나 불러올 수 있다. hgetall은 저장된 모든 해시 데이터를 불러온다.
@Test
public void hashTest() {
CommandAction action = redisCommands -> {
String key = "lettuce:hash";
// hset, hget
// 필드명 지정
String field = "roleCode";
// hash 타입으로 field명에 value 저장
redisCommands.hset(key, field, "A001");
String hgetResult = redisCommands.hget(key, field);
System.out.println("hget = " + hgetResult);
// hmset, hmget
Map<String, String> map = new HashMap<>();
map.put("roleCode", "A001");
map.put("dvsnCode", "B123");
map.put("age", "27");
redisCommands.hmset(key, map);
List<KeyValue<String, String>> hmgetResult =
redisCommands.hmget(key, map.keySet().toArray(new String[0]));
hmgetResult.stream().forEach(m -> {
System.out.println("field = " + m.getKey() + " | value = " + m.getValue());
});
// hgetall
Map<String, String> hgetallResult = redisCommands.hgetall(key);
System.out.println(hgetallResult);
};
CommandTemplate.commandAction(action);
}
